{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 线性模型\n",
    "- 岭回归\n",
    "- lasso回归\n",
    "- 逻辑回归\n",
    "- Elastic Net\n",
    "-  线性判别分析\n",
    "\n",
    "## 1. 普通线性回归\n",
    "\n",
    "- 线性回归是一种回归分析技术，回归分析本质上就是一个函数估计问题。\n",
    "\n",
    "- 根据给定的数据集，定义模型和模型的损失函数，我们的目标是损失函数最小化。可以用梯度下降法求解使损失函数最小化的参数w和b，要注意的是，使用梯度下降时，必须要进行特征归一化（Feature Scaling）。特征归一化有两个好处：一是提升模型的收敛速度，二是提升模型精度，它可以让各个特征对结果做出的贡献相"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2. 广义线性模型\n",
    "- 令h(y)=wTx + b，这样就得到了广义线性模型，例如lny=wTx+ b，它是通过exp(wTx + b)来拟合y的 ，实质上是非线性的。\n",
    "![广义线性模型：http://img.blog.csdn.net/20170401162522294?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWFyc2poYW8=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center][url]\n",
    "[url]: http://img.blog.csdn.net/20170401162522294?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWFyc2poYW8=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3. 逻辑回归\n",
    "[http://blog.csdn.net/marsjhao/article/details/68945711][url]\n",
    "[url]: http://blog.csdn.net/marsjhao/article/details/68945711"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4. 线性判别分析\n",
    "\n",
    "- 线性判别分析（Linear Discriminant Analysis，LDA）的思想是：\n",
    "\n",
    "- 训练时，设法将训练样本投影到一条直线上，使得同类样本的投影点尽可能地接近、异类样本的投影点尽可能远离。要学习的就是这样一条直线。\n",
    "\n",
    "- 预测时，将待预测样本投影到学到的直线上，根据其投影点的位置来判定其类别。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "线性回归模型\n",
      "Cofficients:[ -43.26774487 -208.67053951  593.39797213  302.89814903 -560.27689824\n",
      "  261.47657106   -8.83343952  135.93715156  703.22658427   28.34844354], intercept 153.07\n",
      "Residual sum of square: 3180.20\n",
      "Score: 0.36\n",
      "Ridge岭回归\n",
      "Cofficients:[  21.19927911  -60.47711393  302.87575204  179.41206395    8.90911449\n",
      "  -28.8080548  -149.30722541  112.67185758  250.53760873   99.57749017], intercept 152.45\n",
      "Residual sum of square: 3192.33\n",
      "Score: 0.36\n",
      "不同的alpha值对岭回归预测性能的影响\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nwkJERJL6/x7MMwRnfzWNAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fd9e01f2e90>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Lasso回归\n",
      "Cofficients:[   0.           -0.          442.67992538    0.            0.            0.\n",
      "   -0.            0.          330.76014648    0.        ], intercept 152.52\n",
      "Residual sum of square: 3583.42\n",
      "Score: 0.28\n",
      "不同的alpha值对Lasso回归预测性能的影响\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYsAAAEaCAYAAADg2nttAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3Xl8XeV95/HPV5LlVfIqY3mXsQGJ\nsCXChCWQaVlMSUwWCEv7qgNMKEmYdoamLbSZkKHTCUnbtM2UNJBAmqQhhBJKnUBKyEIoYbPYHGxj\nMMbGwjY2NnjFliX9+sc9di5C8r2SdXSke7/v1+u+dM9znnP1exDS12d9FBGYmZkdTEXWBZiZ2eDn\nsDAzs4IcFmZmVpDDwszMCnJYmJlZQQ4LMzMryGFhZmYFOSzMiiBpjaQzs67DLCsOCzMzK8hhYdZH\nksZL+pGkzZLeSN5Pz1v/cUmrJe2Q9LKk303a50r6paRtkl6X9P28bU6RtCRZt0TSKVmMzawrh4VZ\n31UA3wRmATOBt4B/BJA0GvgKcG5E1ACnAM8k2/0l8BNgPDAd+P/JNhOAe5PtJgJfBu6VNHGAxmPW\nI4eFWR9FxJaI+EFE7I6IHcBfAWfkdekE3iVpZERsiIhlSfs+cgEzNSL2RMTDSft5wIsR8Z2IaI+I\n7wHPAx8coCGZ9chhYdZHkkZJulnSWknbgYeAcZIqI2IXcBFwFbBB0r2Sjko2/VNAwBOSlkm6PGmf\nCqzt8m3WAtPSH43ZwTkszPruj4EjgZMiohY4PWkXQETcHxFnAfXk9hC+nrRvjIhPRMRU4A+Ar0qa\nC6wnt8eRbybwauojMSvAYWFWvGGSRux/kTvn8BbwZnK+4fr9HSUdJmlhcu5iL7AT6EjWXZh3IvwN\nIJJ19wFHSLpUUpWki4Am4EcDNUCznjgszIp3H7lw2P8aB4wEXgceA/4jr28FuT2P9cBWcucyPpWs\nOxF4XNJOYDHwRxHxckRsAT6QbLeF3OGqD0TE6ymPy6wgefIjMzMrxHsWZmZWkMPCzMwKcliYmVlB\nDgszMyvIYWFmZgVVZV1Af5k0aVLMnj076zLMzIaUJ5988vWIqCvUr2TCYvbs2bS0tGRdhpnZkCKp\n6yNmuuXDUGZmVpDDwszMCnJYmJlZQQ4LMzMryGFhZmYFOSzMzKygkrl0dqiKCNo6Omlrz732dUTu\nfUcHbe2/Wbcv+drRGQyrqmBYhXJfKyuoqhDV3b2vFNWVufeVFcp6qGY2hKUaFpIWAP8AVALfiIgb\nu6y/Cvg0uYlfdgJXRsRySbOBFcDKpOtjEXFVGjW+1dbBD55qpaMzDrzaO4POCNo7go7OTto7g44I\nOjpy6zq6LHfG/va8P/b7/8DvD4K8QGjr6GTf/q8dA/OIeAmGVVZQnYTIiKpKDp88mqOm1NJYX0tj\nfQ1zJ49heFXlgNRjZkNLamEhqRK4CTgLaAWWSFocEcvzut0eEV9L+i8EvgwsSNa9FBHHp1Xffrvb\n2vnsPc8dtE9VhaisEFUVoiL5WllRcaC967rhVRVUV1UwfFgFY0ZUUV2ZWz7wNfmX/9vaelwnqisr\nk/bc99rXEezr6KQ9+drW5f3B1u1/v2tvB6s27eC7j69lz77OA+M8vG4MjfU1HFX/mxCpGzMcyXsm\nZuUszT2L+cCqiFgNIOkO4HzgQFhExPa8/qPJTS85oMaPquaJP//t5A9+BZWVolJvD4BS1tEZvPz6\nLp7fuJ0VG7azYsMOnnh5K/c8s/5An4mjqw8Ex/49kbmTx1Bd5VNeZuUizbCYBqzLW24FTuraSdKn\ngWuAauC38lY1SHoa2A58NiL+M40iKyrE5NoRaXz0kFBZIeZOHsPcyWP4wLFTD7S/ubuNFRt2vC1E\nvv3oWva2/2YvZO7kMTTW1/JbR03m3HdNoarS4WFWqtIMi+7+Sf6OPYeIuAm4SdKlwGeBRcAGYGZE\nbJH0HuAeSUd32RNB0pXAlQAzZ87s7/rL2rhR1Zx8+EROPnzigbb2jk7WbNnFig07kgDZzsOrXuff\nnn6V6eNH8on3zeHC5umMqvZ1E2alJrU5uCWdDHw+Is5Jlq8DiIgv9NC/AngjIsZ2s+5B4DMR0eOT\nApubm8MPEhx4nZ3BAyte4+ZfvsRTr7zJuFHD+P2TZ7Po5FlMHDM86/LMrABJT0ZEc6F+aR43WALM\nk9QgqRq4GFic30HSvLzF84AXk/a65AQ5kuYA84DVKdZqfVRRIc45egp3f+pU7rrqZJpnTeArP3uR\nU278OZ+959es3bIr6xLNrB+kdrwgItolXQ3cT+7S2dsiYpmkG4CWiFgMXC3pTGAf8Aa5Q1AApwM3\nSGond1ntVRGxNa1arX80z57AN2ZPYNWmHXz9oZe5c0krtz/+Cue+q54rT5/DcTPGZV2imfVRaoeh\nBpoPQw0+m7bv4ZuPrOFfHlvLjj3tvHfOBP7gjMN5/xF1vhTXbJAo9jCUw8JSt2PPPu54Yh23/epl\nNmzbw1FTavjE++bwweOm+vJbs4w5LGzQaWvv5IfPrueWh1az8rUd1I8dwRWnNXDx/JmMGe4rqMyy\n4LCwQSsiePCFzdz8y5d4bPVWakZU8XvvncVlp8wu63tezLLgsLAh4dl1b3LLQ6v58XMbqKqo4MMn\nTOMTp89h7uQxWZdmVhYcFjakrHl9F994eDX/2tLK3vZOzmo6jKvOmMN7Zk3IujSzkuawsCFpy869\nfOvRtXz70TW8uXsf75k1ns+cfeTb7iQ3s/4zGG7KM+u1iWOGc81ZR/DItb/F/1l4NBu37eGyf37C\nN/eZZcxhYYPSqOoqFp0ymx988hSGVVRw7Q9+TansBZsNRQ4LG9SmjB3Bn5/XyKOrt3DHknWFNzCz\nVDgsbNC7+MQZnDxnIv/v3hVs3LYn63LMypLDwgY9Sdz40WPY19nJZ+/x4SizLDgsbEiYNXE0nzn7\nSH66YhM/XLoh63LMyo7DwoaMy05t4LgZ4/j84mVs3dWWdTlmZcVhYUNGZYX40kePZceefdzww2VZ\nl2NWVhwWNqQcOaWGT/+3udzzzHp+/vxrWZdjVjYcFjbkfOr9cznysBr+/O7n2LFnX9blmJUFh4UN\nOdVVFXzxgmPZtGMPX/jx81mXY1YWHBY2JB0/YxxXnNbA7Y+/wqMvbcm6HLOS57CwIeuas45k1sRR\nXHf3Ut5q68i6HLOSlmpYSFogaaWkVZKu7Wb9VZJ+LekZSQ9Laspbd12y3UpJ56RZpw1NI6sr+cJH\njmHNlt383U9fyLocs5KWWlhIqgRuAs4FmoBL8sMgcXtEHBMRxwNfAr6cbNsEXAwcDSwAvpp8ntnb\nnHL4JC6ZP5Nv/Odqnl33ZtblmJWsNPcs5gOrImJ1RLQBdwDn53eIiO15i6OB/c9xOB+4IyL2RsTL\nwKrk88ze4brfOYrJNSP4sx8spa29M+tyzEpSmmExDch/TGhr0vY2kj4t6SVyexZ/2Mttr5TUIqll\n8+bN/Va4DS21I4bxfz/0Lp7fuIN/evClrMsxK0lphoW6aXvHE+Ai4qaIOBz4M+Czvdz2lohojojm\nurq6QyrWhrYzmw5j4XFT+cdfvMgLr+3IuhyzkpNmWLQCM/KWpwPrD9L/DuBDfdzWjOs/2ETNiGH8\n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\nTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fd9e078f1d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ElasticNet回归\n",
      "Cofficients:[ 0.40560736  0.          3.76542456  2.38531508  0.58677945  0.22891647\n",
      " -2.15858149  2.33867566  3.49846121  1.98299707], intercept 151.93\n",
      "Residual sum of square: 4922.36\n",
      "Score: 0.01\n",
      "不同的alpha值对Lasso回归预测性能的影响\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAbsAAAE1CAYAAAB+0062AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzsvXl8Y/dd7/0+kmx5k+3Z98lsni2Z\naWafNkDSkJAFmKaUcNu0XEobbtqbvshDeAgpKeE2JBAK5LY8yW0a0tBCKLlQLjSlWdrQpu1T0szS\nGTK1PR57bM/Ys3i3NluSJf3uH9Lv+Oj4HOkcLZasOe/Xyy/LR2eTLJ3P+e6KEAIHBwcHB4dqxlXu\nE3BwcHBwcCg1jtg5ODg4OFQ9jtg5ODg4OFQ9jtg5ODg4OFQ9jtg5ODg4OFQ9jtg5ODg4OFQ9jtg5\nODg4OFQ9jtg5ODg4OFQ9jtg5ODg4OFQ9HpvrO+1WHBwcHEqHUu4TqFYcy87BwcHBoepxxM7BwcHB\noepxxM7BwcHBoepxxM7BwcHBoepxxM7BwcHBoepxxM7BwcHBoepxxM7BwcHBoepxxM6h7HzlK1/h\nZ37mZ4q+37//+7/nF37hF4q+XwcHh4WHI3YO88aGDRuor6+nqalJ/fnUpz5VlH339/ejKArxeFxd\n9uEPf5hvf/vbObf9H//jf6AoCv/0T/+kLovH4yiKQn9/f9Zt33zzTdauXZv3eTs4OMwPjtg5zCvf\n/OY3CYVC6s/TTz9d7lMCYPHixTz66KMkEolyn4qDg0MJcMTOoeJ44IEHWLduHc3Nzezbt48f/vCH\n6nNHjx5l//79NDc3s2LFCh588EEAfu7nfg6A1tZWmpqaeOutt+a4R9vb27n11ltZvHgxK1as4E/+\n5E/U526//XZqa2t58cUXDc/plVdeYefOnfh8PtasWcNf/MVfEA6HueOOO7h06ZJqqV66dKkUb4mD\ng0OBOGLnUHEcOHCAU6dOMT4+zj333MPdd99NJBIBUkL4wAMPEAgEOHfuHL/2a78GwA9+8AMAJicn\nCYVCvPvd787YZzAY5JZbbuH222/n0qVL9PT08PM///Pq84qi8Md//Md89rOfZWZmZs45ffzjH+dL\nX/oSwWCQn/70p9x88800Njby6quvsnr1atVSXb16daneFgcHhwJwxM5hXrnrrrtobW1Vf/76r/96\n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\nMlQSXLNmjU+keuLECbZu3co999zDJZdcMtVrVirOOOMMtm/fTn19/XQiuyhChCjZncZ4++23mTVr\nFmVlZezZsweIevf5glANtkvvvrS0NAoKChgaGuLQoUMkJCTQ19fHgQMHHISs3f1/PvnkE+644w6e\nfbcqRDcAAAi8SURBVPZZNmzYEKy3ftrgySefDPchRDFFECW70xgff/wxb731Fjt37mR4eJi+vj5u\nv/12enp61FmlqHef9wjFYHt/fz8VFRUsW7ZMbSZx9u6TLgVa7z4hBK+++ir/+7//y9tvv01+fn5I\n33ukI6qeEkWgiNbspgj27NnD448/zttvv803v/lNLrnkErVBZdWqVdx4443hPsTTGv5oeXZ2dlJX\nV0dJScmEhqla7z69Xs/HH3/MP/7xDxITE+no6OCPf/wjaWlpQX0vnlwLnnjiCZ599lliY2OZOXMm\nzz//PAsWLAjqMUQxIaKMHiJEyW6KQEt29fX16ujB2rVr+d3vfheUubAoxqBNeX7wwQcOKc81a9bw\nP//zP5SVlbFp0yafhqF7enq45ZZbaGtrQwhBbGws1157LVdffXVQjtsb14K///3vbNy4keTkZH79\n61+zZ88eXn311aDsPwqPiJJdiBAluyj8Qk9PD9dddx3l5eUoisLzzz/P0qVLp6Vvnzbl+de//pXd\nu3eTl5fHt7/9bc477zyvU56dnZ1ceeWVfOMb3+CWW25BURS6u7s5depU0Bo0vHUtkDh48CA333wz\nH3/8cVD2H4VHRMkuRJj6/ctRhAS33XYb559/PlVVVRw+fJjly5fz6KOPcu6551JTU8O5557Lo48+\nGu7DnBTILs8LL7yQU6dOcdddd/Hcc89htVq54447+OIXv8gdd9zBn//8Z3UW0hlVVVVceOGF/PCH\nP+TWW29VyTEnJyeonYiuXAvcdes+99xzUQHmKKYEog0qUfiMvr4+PvzwQ1XZPj4+nvj4eN588021\nK/Sqq67irLPOmhYmtRLJyck89NBDnHHGGQCUlJR41eX50Ucfcc899/Diiy+G3LvNl27d3/3ud+zf\nv58PPvggpMcURRSTgSjZReEz6uvrmTlzJt/5znc4fPgwZWVlPPnkk9Pet0+n06lEp4W7Ls9rr72W\nmJgYPvjgg0npmvXkWiDx/vvv89Of/pQPPvggWu+NYkogWrOLwmfs37+fTZs28fHHH7Nx4//f3v2E\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fda140cdad0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Logistic回归\n",
      "Cofficients:[[ 0.39310895  1.35470406 -2.12308303 -0.96477916]\n",
      " [ 0.22462128 -1.34888898  0.60067997 -1.24122398]\n",
      " [-1.50918214 -1.29436177  2.14150484  2.2961458 ]], intercept [ 0.24122458  1.13775782 -1.09418724]\n",
      "Score: 0.97\n",
      "Logistic_multinomial回归\n",
      "Cofficients:[[-0.38338524  0.85469565 -2.27284096 -0.98423562]\n",
      " [ 0.34342817 -0.37355877 -0.03014103 -0.8615746 ]\n",
      " [ 0.03995707 -0.48113687  2.30298199  1.84581022]], intercept [  8.80039191   2.46842085 -11.26881276]\n",
      "Score: 1.00\n"
     ]
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt  \n",
    "import numpy as np  \n",
    "from sklearn import datasets, linear_model, cross_validation  \n",
    "\n",
    "# 加载sklearn中的糖尿病人数据集  \n",
    "def load_data():  \n",
    "    diabetes = datasets.load_diabetes()  \n",
    "    return cross_validation.train_test_split(diabetes.data, diabetes.target,   \n",
    "                                             test_size=0.25, random_state=0)  \n",
    "\n",
    "# 线性回归模型  \n",
    "def test_LinearRegression(*data):  \n",
    "    X_train, X_test, y_train, y_test = data  \n",
    "    regr = linear_model.LinearRegression()  \n",
    "    regr.fit(X_train, y_train)  \n",
    "    print('线性回归模型')  \n",
    "    # 线性回归模型的权重值和偏置值  \n",
    "    print('Cofficients:%s, intercept %.2f' % (regr.coef_, regr.intercept_))  \n",
    "    # 测试集预测结果的均方误差  \n",
    "    print('Residual sum of square: %.2f' % np.mean((regr.predict(X_test) - y_test) ** 2))  \n",
    "    # 预测性能得分，score值最大为1.0，越大越好，也可能为负值（预测效果太差）  \n",
    "    print('Score: %.2f' % regr.score(X_test, y_test))  \n",
    "\n",
    "X_train, X_test, y_train, y_test = load_data()  \n",
    "test_LinearRegression(X_train, X_test, y_train, y_test)  \n",
    "\n",
    "# 岭回归Ridge Regresssion  \n",
    "def test_Ridge(*data):  \n",
    "    X_train, X_test, y_train, y_test = data  \n",
    "    regr = linear_model.Ridge()  \n",
    "    regr.fit(X_train, y_train)  \n",
    "    print('Ridge岭回归')  \n",
    "    print('Cofficients:%s, intercept %.2f' % (regr.coef_, regr.intercept_))  \n",
    "    print('Residual sum of square: %.2f' % np.mean((regr.predict(X_test) - y_test) ** 2))  \n",
    "    print('Score: %.2f' % regr.score(X_test, y_test))  \n",
    "\n",
    "X_train, X_test, y_train, y_test = load_data()  \n",
    "test_Ridge(X_train, X_test, y_train, y_test)  \n",
    "\n",
    "# 检验不同的alpha值对岭回归预测性能的影响  \n",
    "def test_Ridge_alpha(*data):  \n",
    "    X_train, X_test, y_train, y_test = data  \n",
    "    print('不同的alpha值对岭回归预测性能的影响')  \n",
    "    alphas = [0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 20, 50, 100, 200, 500, 1000]  \n",
    "    scores = []  \n",
    "    # 按照list中的元素迭代  \n",
    "    for i, alpha in enumerate(alphas):          \n",
    "        regr = linear_model.Ridge(alpha=alpha)  \n",
    "        regr.fit(X_train, y_train)  \n",
    "        scores.append(regr.score(X_test, y_test))  \n",
    "    # alpha对预测性能影响的可视化  \n",
    "    fig = plt.figure()  \n",
    "    ax = fig.add_subplot(1, 1, 1)  \n",
    "    ax.plot(alphas, scores)  \n",
    "    ax.set_xlabel(r\"$\\alpha$\")  \n",
    "    ax.set_ylabel('score')  \n",
    "    ax.set_xscale('log')  \n",
    "    ax.set_title('Ridge')  \n",
    "    plt.show()  \n",
    "\n",
    "X_train, X_test, y_train, y_test = load_data()  \n",
    "test_Ridge_alpha(X_train, X_test, y_train, y_test)  \n",
    "\n",
    "# Lasso回归  \n",
    "def test_Lasso(*data):  \n",
    "    X_train, X_test, y_train, y_test = data  \n",
    "    regr = linear_model.Lasso()  \n",
    "    regr.fit(X_train, y_train)  \n",
    "    print('Lasso回归')  \n",
    "    print('Cofficients:%s, intercept %.2f' % (regr.coef_, regr.intercept_))  \n",
    "    print('Residual sum of square: %.2f' % np.mean((regr.predict(X_test) - y_test) ** 2))  \n",
    "    print('Score: %.2f' % regr.score(X_test, y_test))  \n",
    "\n",
    "X_train, X_test, y_train, y_test = load_data()  \n",
    "test_Lasso(X_train, X_test, y_train, y_test)  \n",
    "\n",
    "# 检验不同的alpha值对Lasso回归预测性能的影响  \n",
    "def test_Lasso_alpha(*data):  \n",
    "    X_train, X_test, y_train, y_test = data  \n",
    "    print('不同的alpha值对Lasso回归预测性能的影响')  \n",
    "    alphas = [0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 20, 50, 100, 200, 500, 1000]  \n",
    "    scores = []  \n",
    "    # 按照list中的元素迭代  \n",
    "    for i, alpha in enumerate(alphas):          \n",
    "        regr = linear_model.Lasso(alpha=alpha)  \n",
    "        regr.fit(X_train, y_train)  \n",
    "        scores.append(regr.score(X_test, y_test))  \n",
    "    # alpha对预测性能影响的可视化  \n",
    "    fig = plt.figure()  \n",
    "    ax = fig.add_subplot(1, 1, 1)  \n",
    "    ax.plot(alphas, scores)  \n",
    "    ax.set_xlabel(r\"$\\alpha$\")  \n",
    "    ax.set_ylabel('score')  \n",
    "    ax.set_xscale('log')  \n",
    "    ax.set_title('Lasso')  \n",
    "    plt.show()  \n",
    "\n",
    "X_train, X_test, y_train, y_test = load_data()  \n",
    "test_Lasso_alpha(X_train, X_test, y_train, y_test)  \n",
    "\n",
    "# ElasticNet回归  \n",
    "def test_ElasticNet(*data):  \n",
    "    X_train, X_test, y_train, y_test = data  \n",
    "    regr = linear_model.ElasticNet()  \n",
    "    regr.fit(X_train, y_train)  \n",
    "    print('ElasticNet回归')  \n",
    "    print('Cofficients:%s, intercept %.2f' % (regr.coef_, regr.intercept_))  \n",
    "    print('Residual sum of square: %.2f' % np.mean((regr.predict(X_test) - y_test) ** 2))  \n",
    "    print('Score: %.2f' % regr.score(X_test, y_test))  \n",
    "\n",
    "X_train, X_test, y_train, y_test = load_data()  \n",
    "test_ElasticNet(X_train, X_test, y_train, y_test)  \n",
    "\n",
    "# 检验不同的alpha值对ElasticNet回归预测性能的影响  \n",
    "def test_ElasticNet_alpha_rho(*data):  \n",
    "    X_train, X_test, y_train, y_test = data  \n",
    "    print('不同的alpha值对Lasso回归预测性能的影响')  \n",
    "    alphas = np.logspace(-2, 2)  \n",
    "    rhos = np.linspace(0.01, 1)  \n",
    "    scores = []  \n",
    "    for alpha in alphas:  \n",
    "        for rho in rhos:            \n",
    "            regr = linear_model.ElasticNet(alpha=alpha, l1_ratio=rho)  \n",
    "            regr.fit(X_train, y_train)  \n",
    "            scores.append(regr.score(X_test, y_test))  \n",
    "    # alpha对预测性能影响的可视化  \n",
    "    alphas, rhos = np.meshgrid(alphas, rhos)  \n",
    "    scores = np.array(scores).reshape(alphas.shape)  \n",
    "    from mpl_toolkits.mplot3d import Axes3D  \n",
    "    from matplotlib import cm  \n",
    "    fig = plt.figure()  \n",
    "    ax = Axes3D(fig)  \n",
    "    surf = ax.plot_surface(alphas, rhos, scores, rstride=1, cstride=1,   \n",
    "                           cmap=cm.jet, linewidth=0, antialiased=False)  \n",
    "    fig.colorbar(surf, shrink=0.5, aspect=5)  \n",
    "    ax.set_xlabel(r\"$\\alpha$\")  \n",
    "    ax.set_ylabel(r\"$\\rho$\")  \n",
    "    ax.set_zlabel('score')  \n",
    "    ax.set_title('ElasticNst')  \n",
    "    plt.show()  \n",
    "\n",
    "X_train, X_test, y_train, y_test = load_data()  \n",
    "test_ElasticNet_alpha_rho(X_train, X_test, y_train, y_test)  \n",
    "\n",
    "# 加载sklearn中的鸢尾花数据集  \n",
    "def load_data1():  \n",
    "    iris = datasets.load_iris()  \n",
    "    X_train = iris.data  \n",
    "    y_train = iris.target  \n",
    "    return cross_validation.train_test_split(X_train, y_train,   \n",
    "                            test_size=0.25, random_state=0, stratify=y_train)  \n",
    "\n",
    "# Logistic回归  \n",
    "def test_LogisticRegression(*data):  \n",
    "    X_train, X_test, y_train, y_test = data  \n",
    "    regr = linear_model.LogisticRegression()  \n",
    "    regr.fit(X_train, y_train)  \n",
    "    print('Logistic回归')  \n",
    "    print('Cofficients:%s, intercept %s' % (regr.coef_, regr.intercept_))  \n",
    "    print('Score: %.2f' % regr.score(X_test, y_test))  \n",
    "\n",
    "X_train, X_test, y_train, y_test = load_data1()  \n",
    "test_LogisticRegression(X_train, X_test, y_train, y_test)  \n",
    "\n",
    "# 多分类Logistic回归  \n",
    "def test_LogisticRegression_multinomial(*data):  \n",
    "    X_train, X_test, y_train, y_test = data  \n",
    "    regr = linear_model.LogisticRegression(multi_class='multinomial', solver='lbfgs')  \n",
    "    regr.fit(X_train, y_train)  \n",
    "    print('Logistic_multinomial回归')  \n",
    "    print('Cofficients:%s, intercept %s' % (regr.coef_, regr.intercept_))  \n",
    "    print('Score: %.2f' % regr.score(X_test, y_test))  \n",
    "\n",
    "X_train, X_test, y_train, y_test = load_data1()  \n",
    "test_LogisticRegression_multinomial(X_train, X_test, y_train, y_test)  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.14"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
